home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / relief.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  15KB  |  520 lines

  1. /***************************************************************************
  2.  
  3.     Relief Pitcher
  4.  
  5.     driver by Aaron Giles
  6.  
  7. ****************************************************************************/
  8.  
  9.  
  10. #include "driver.h"
  11. #include "machine/atarigen.h"
  12. #include "vidhrdw/generic.h"
  13.  
  14.  
  15. WRITE_HANDLER( relief_playfieldram_w );
  16. WRITE_HANDLER( relief_playfield2ram_w );
  17. WRITE_HANDLER( relief_colorram_w );
  18. WRITE_HANDLER( relief_video_control_w );
  19.  
  20. int relief_vh_start(void);
  21. void relief_vh_stop(void);
  22. void relief_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  23.  
  24. void relief_scanline_update(int scanline);
  25.  
  26.  
  27. static UINT8 ym2413_volume;
  28. static UINT8 overall_volume;
  29. static UINT32 adpcm_bank_base;
  30.  
  31.  
  32.  
  33. /*************************************
  34.  *
  35.  *    Interrupt handling
  36.  *
  37.  *************************************/
  38.  
  39. static void update_interrupts(void)
  40. {
  41.     int newstate = 0;
  42.  
  43.     if (atarigen_scanline_int_state)
  44.         newstate = 4;
  45.  
  46.     if (newstate)
  47.         cpu_set_irq_line(0, newstate, ASSERT_LINE);
  48.     else
  49.         cpu_set_irq_line(0, 7, CLEAR_LINE);
  50. }
  51.  
  52.  
  53.  
  54. /*************************************
  55.  *
  56.  *    Initialization
  57.  *
  58.  *************************************/
  59.  
  60. static void init_machine(void)
  61. {
  62.     atarigen_eeprom_reset();
  63.     atarigen_video_control_reset();
  64.     atarigen_interrupt_reset(update_interrupts);
  65.     atarigen_scanline_timer_reset(relief_scanline_update, 8);
  66.  
  67.     OKIM6295_set_bank_base(0, ALL_VOICES, 0);
  68.     ym2413_volume = 15;
  69.     overall_volume = 127;
  70.     adpcm_bank_base = 0;
  71. }
  72.  
  73.  
  74.  
  75. /*************************************
  76.  *
  77.  *    I/O handling
  78.  *
  79.  *************************************/
  80.  
  81. static READ_HANDLER( special_port2_r )
  82. {
  83.     int result = input_port_2_r(offset);
  84.     if (atarigen_cpu_to_sound_ready) result ^= 0x0020;
  85.     if (!(result & 0x0080) || atarigen_get_hblank()) result ^= 0x0001;
  86.     return result;
  87. }
  88.  
  89.  
  90.  
  91. /*************************************
  92.  *
  93.  *    Audio control I/O
  94.  *
  95.  *************************************/
  96.  
  97. static WRITE_HANDLER( audio_control_w )
  98. {
  99.     (void)offset;
  100.     if (!(data & 0x00ff0000))
  101.     {
  102.         ym2413_volume = (data >> 1) & 15;
  103.         atarigen_set_ym2413_vol((ym2413_volume * overall_volume * 100) / (127 * 15));
  104.         adpcm_bank_base = (0x040000 * ((data >> 6) & 3)) | (adpcm_bank_base & 0x100000);
  105.     }
  106.     if (!(data & 0xff000000))
  107.         adpcm_bank_base = (0x100000 * ((data >> 8) & 1)) | (adpcm_bank_base & 0x0c0000);
  108.  
  109.     OKIM6295_set_bank_base(0, ALL_VOICES, adpcm_bank_base);
  110. }
  111.  
  112.  
  113. static WRITE_HANDLER( audio_volume_w )
  114. {
  115.     (void)offset;
  116.     if (!(data & 0x00ff0000))
  117.     {
  118.         overall_volume = data & 127;
  119.         atarigen_set_ym2413_vol((ym2413_volume * overall_volume * 100) / (127 * 15));
  120.         atarigen_set_oki6295_vol(overall_volume * 100 / 127);
  121.     }
  122. }
  123.  
  124.  
  125.  
  126. /*************************************
  127.  *
  128.  *    MSM5295 I/O
  129.  *
  130.  *************************************/
  131.  
  132. static READ_HANDLER( adpcm_r )
  133. {
  134.     return OKIM6295_status_0_r(offset) | 0xff00;
  135. }
  136.  
  137.  
  138. static WRITE_HANDLER( adpcm_w )
  139. {
  140.     if (!(data & 0x00ff0000))
  141.         OKIM6295_data_0_w(offset, data & 0xff);
  142. }
  143.  
  144.  
  145.  
  146. /*************************************
  147.  *
  148.  *    YM2413 I/O
  149.  *
  150.  *************************************/
  151.  
  152. static READ_HANDLER( ym2413_r )
  153. {
  154.     (void)offset;
  155.     return YM2413_status_port_0_r(0) | 0xff00;
  156. }
  157.  
  158.  
  159. static WRITE_HANDLER( ym2413_w )
  160. {
  161.     if (!(data & 0x00ff0000))
  162.     {
  163.         if (offset & 2)
  164.             YM2413_data_port_0_w(0, data & 0xff);
  165.         else
  166.             YM2413_register_port_0_w(0, data & 0xff);
  167.     }
  168. }
  169.  
  170.  
  171.  
  172. /*************************************
  173.  *
  174.  *    Main CPU memory handlers
  175.  *
  176.  *************************************/
  177.  
  178. static struct MemoryReadAddress readmem[] =
  179. {
  180.     { 0x000000, 0x07ffff, MRA_ROM },
  181.     { 0x140000, 0x140003, ym2413_r },
  182.     { 0x140010, 0x140011, adpcm_r },
  183.     { 0x180000, 0x180fff, atarigen_eeprom_upper_r },
  184.     { 0x260000, 0x260001, input_port_0_r },
  185.     { 0x260002, 0x260003, input_port_1_r },
  186.     { 0x260010, 0x260011, special_port2_r },
  187.     { 0x260012, 0x260013, input_port_3_r },
  188.     { 0x3effc0, 0x3effff, atarigen_video_control_r },
  189.     { 0xfe0000, 0xfe0fff, MRA_BANK1 },
  190.     { 0xfeffc0, 0xfeffff, atarigen_video_control_r },
  191.     { 0xff0000, 0xff5fff, MRA_BANK3 },
  192.     { 0xff6000, 0xff7fff, MRA_BANK4 },
  193.     { 0xff8000, 0xff8fff, MRA_BANK5 },
  194.     { 0xff9000, 0xffffff, MRA_BANK6 },
  195.     { -1 }  /* end of table */
  196. };
  197.  
  198.  
  199. static struct MemoryWriteAddress writemem[] =
  200. {
  201.     { 0x000000, 0x07ffff, MWA_ROM },
  202.     { 0x140000, 0x140003, ym2413_w },
  203.     { 0x140010, 0x140011, adpcm_w },
  204.     { 0x140020, 0x140021, audio_volume_w },
  205.     { 0x140030, 0x140031, audio_control_w },
  206.     { 0x180000, 0x180fff, atarigen_eeprom_w, &atarigen_eeprom, &atarigen_eeprom_size },
  207.     { 0x1c0030, 0x1c0031, atarigen_eeprom_enable_w },
  208.     { 0x2a0000, 0x2a0001, watchdog_reset_w },
  209.     { 0x3effc0, 0x3effff, atarigen_video_control_w, &atarigen_video_control_data },
  210.     { 0xfe0000, 0xfe0fff, atarigen_666_paletteram_w, &paletteram },
  211.     { 0xfeffc0, 0xfeffff, atarigen_video_control_w },
  212.     { 0xff0000, 0xff1fff, relief_playfield2ram_w, &atarigen_playfield2ram, &atarigen_playfield2ram_size },
  213.     { 0xff2000, 0xff3fff, relief_playfieldram_w, &atarigen_playfieldram, &atarigen_playfieldram_size },
  214.     { 0xff4000, 0xff5fff, relief_colorram_w, &atarigen_playfieldram_color },
  215.     { 0xff6000, 0xff7fff, MWA_BANK4, &atarigen_spriteram, &atarigen_spriteram_size },
  216.     { 0xff8000, 0xff8fff, MWA_BANK5, &atarigen_alpharam, &atarigen_alpharam_size },
  217.     { 0xff9000, 0xffffff, MWA_BANK6 },
  218.     { -1 }  /* end of table */
  219. };
  220.  
  221.  
  222.  
  223. /*************************************
  224.  *
  225.  *    Port definitions
  226.  *
  227.  *************************************/
  228.  
  229. INPUT_PORTS_START( relief )
  230.     PORT_START    /* 260000 */
  231.     PORT_BIT(  0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
  232.     PORT_BIT(  0x0100, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
  233.     PORT_BIT(  0x0100, IP_ACTIVE_LOW, IPT_START1 )
  234.     PORT_BIT(  0x0200, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
  235.     PORT_BIT(  0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
  236.     PORT_BIT(  0x0800, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
  237.     PORT_BIT(  0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
  238.     PORT_BIT(  0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 )
  239.     PORT_BIT(  0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 )
  240.     PORT_BIT(  0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
  241.  
  242.     PORT_START    /* 260002 */
  243.     PORT_BIT(  0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
  244.     PORT_BIT(  0x0100, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
  245.     PORT_BIT(  0x0100, IP_ACTIVE_LOW, IPT_START3 )
  246.     PORT_BIT(  0x0200, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  247.     PORT_BIT(  0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  248.     PORT_BIT(  0x0800, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
  249.     PORT_BIT(  0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  250.     PORT_BIT(  0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
  251.     PORT_BIT(  0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
  252.     PORT_BIT(  0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
  253.  
  254.     PORT_START    /* 260010 */
  255.     PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_UNUSED )
  256.     PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_UNUSED )
  257.     PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_UNUSED )
  258.     PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
  259.     PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_UNUSED )
  260.     PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_UNUSED )    /* tested before writing to 260040 */
  261.     PORT_SERVICE( 0x0040, IP_ACTIVE_LOW )
  262.     PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_VBLANK )
  263.     PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
  264.  
  265.     PORT_START    /* 260012 */
  266.     PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
  267.     PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
  268.     PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_SERVICE )
  269.     PORT_BIT(  0xffdc, IP_ACTIVE_LOW, IPT_UNUSED )
  270. INPUT_PORTS_END
  271.  
  272.  
  273.  
  274. /*************************************
  275.  *
  276.  *    Graphics definitions
  277.  *
  278.  *************************************/
  279.  
  280. static struct GfxLayout pfanmolayout =
  281. {
  282.     8,8,    /* 8*8 sprites */
  283.     32768,    /* 32768 of them */
  284.     4,        /* 4 bits per pixel */
  285.     { 0x80000*3*8, 0x80000*2*8, 0x80000*1*8, 0x80000*0*8 },
  286.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  287.     { 0*8, 2*8, 4*8, 6*8, 8*8, 10*8, 12*8, 14*8 },
  288.     16*8    /* every sprite takes 16 consecutive bytes */
  289. };
  290.  
  291.  
  292. static struct GfxDecodeInfo gfxdecodeinfo[] =
  293. {
  294.     { REGION_GFX1, 0x000000, &pfanmolayout,   0, 64 },        /* alpha & playfield */
  295.     { REGION_GFX1, 0x000001, &pfanmolayout, 256, 16 },        /* sprites */
  296.     { -1 } /* end of array */
  297. };
  298.  
  299.  
  300.  
  301. /*************************************
  302.  *
  303.  *    Sound definitions
  304.  *
  305.  *************************************/
  306.  
  307. static struct OKIM6295interface okim6295_interface =
  308. {
  309.     1,                    /* 1 chip */
  310.     { ATARI_CLOCK_14MHz/4/3/165 },
  311.     { REGION_SOUND1 },
  312.     { 75 }
  313. };
  314.  
  315.  
  316. static struct YM2413interface ym2413_interface =
  317. {
  318.     1,                    /* 1 chip */
  319.     ATARI_CLOCK_14MHz/4,
  320.     { 75 },
  321.     { 0 }
  322. };
  323.  
  324.  
  325. /*************************************
  326.  *
  327.  *    Machine driver
  328.  *
  329.  *************************************/
  330.  
  331. static struct MachineDriver machine_driver_relief =
  332. {
  333.     /* basic machine hardware */
  334.     {
  335.         {
  336.             CPU_M68000,        /* verified */
  337.             ATARI_CLOCK_14MHz/2,
  338.             readmem,writemem,0,0,
  339.             ignore_interrupt,1
  340.         }
  341.     },
  342.     60, DEFAULT_REAL_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  343.     1,
  344.     init_machine,
  345.  
  346.     /* video hardware */
  347.     42*8, 30*8, { 0*8, 42*8-1, 0*8, 30*8-1 },
  348.     gfxdecodeinfo,
  349.     2048, 2048,
  350.     0,
  351.  
  352.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
  353.     0,
  354.     relief_vh_start,
  355.     relief_vh_stop,
  356.     relief_vh_screenrefresh,
  357.  
  358.     /* sound hardware */
  359.     0,0,0,0,
  360.     {
  361.         {
  362.             SOUND_OKIM6295,
  363.             &okim6295_interface
  364.         },
  365.         {
  366.             SOUND_YM2413,
  367.             &ym2413_interface
  368.         }
  369.     },
  370.  
  371.     atarigen_nvram_handler
  372. };
  373.  
  374.  
  375.  
  376. /*************************************
  377.  *
  378.  *    ROM decoding
  379.  *
  380.  *************************************/
  381.  
  382. static void rom_decode(void)
  383. {
  384.     UINT8 *base = memory_region(REGION_SOUND1);
  385.     int i;
  386.  
  387.     /* invert the graphics bits */
  388.     for (i = 0; i < memory_region_length(REGION_GFX1); i++)
  389.         memory_region(REGION_GFX1)[i] ^= 0xff;
  390.  
  391.     /* expand the ADPCM data to avoid lots of memcpy's during gameplay */
  392.     /* the upper 128k is fixed, the lower 128k is bankswitched */
  393.     memcpy(&base[0x000000], &base[0x100000], 0x20000);
  394.     memcpy(&base[0x040000], &base[0x100000], 0x20000);
  395.     memcpy(&base[0x080000], &base[0x140000], 0x20000);
  396.     memcpy(&base[0x0c0000], &base[0x160000], 0x20000);
  397.     memcpy(&base[0x100000], &base[0x180000], 0x20000);
  398.     memcpy(&base[0x140000], &base[0x1a0000], 0x20000);
  399.     memcpy(&base[0x180000], &base[0x1c0000], 0x20000);
  400.     memcpy(&base[0x1c0000], &base[0x1e0000], 0x20000);
  401.  
  402.     memcpy(&base[0x020000], &base[0x120000], 0x20000);
  403.     memcpy(&base[0x060000], &base[0x120000], 0x20000);
  404.     memcpy(&base[0x0a0000], &base[0x120000], 0x20000);
  405.     memcpy(&base[0x0e0000], &base[0x120000], 0x20000);
  406.     memcpy(&base[0x120000], &base[0x120000], 0x20000);
  407.     memcpy(&base[0x160000], &base[0x120000], 0x20000);
  408.     memcpy(&base[0x1a0000], &base[0x120000], 0x20000);
  409.     memcpy(&base[0x1e0000], &base[0x120000], 0x20000);
  410. }
  411.  
  412.  
  413.  
  414. /*************************************
  415.  *
  416.  *    Driver initialization
  417.  *
  418.  *************************************/
  419.  
  420. static void init_relief(void)
  421. {
  422.     static const UINT16 default_eeprom[] =
  423.     {
  424.         0x0001,0x0166,0x0128,0x01E6,0x0100,0x012C,0x0300,0x0144,
  425.         0x0700,0x01C0,0x2F00,0x01EC,0x0B00,0x0148,0x0140,0x0100,
  426.         0x0124,0x0188,0x0120,0x0600,0x0196,0x013C,0x0192,0x0150,
  427.         0x0166,0x0128,0x01E6,0x0100,0x012C,0x0300,0x0144,0x0700,
  428.         0x01C0,0x2F00,0x01EC,0x0B00,0x0148,0x0140,0x0100,0x0124,
  429.         0x0188,0x0120,0x0600,0x0196,0x013C,0x0192,0x0150,0xFF00,
  430.         0x9500,0x0000
  431.     };
  432.  
  433.     atarigen_eeprom_default = default_eeprom;
  434.  
  435.     rom_decode();
  436. }
  437.  
  438.  
  439. static void init_relief2(void)
  440. {
  441.     static const UINT16 default_eeprom[] =
  442.     {
  443.         0x0001,0x01FD,0x019F,0x015E,0x01FF,0x019E,0x03FF,0x015F,
  444.         0x07FF,0x01FD,0x12FF,0x01FC,0x01FB,0x07FF,0x01F7,0x01FF,
  445.         0x01DF,0x02FF,0x017F,0x03FF,0x0300,0x0110,0x0300,0x0140,
  446.         0x0300,0x018E,0x0400,0x0180,0x0101,0x0300,0x0180,0x0204,
  447.         0x0120,0x0182,0x0100,0x0102,0x0600,0x01D5,0x0138,0x0192,
  448.         0x0150,0x01FD,0x019F,0x015E,0x01FF,0x019E,0x03FF,0x015F,
  449.         0x07FF,0x01FD,0x12FF,0x01FC,0x01FB,0x07FF,0x01F7,0x01FF,
  450.         0x01DF,0x02FF,0x017F,0x03FF,0x0300,0x0110,0x0300,0x0140,
  451.         0x0300,0x018E,0x0400,0x0180,0x0101,0x0300,0x0180,0x0204,
  452.         0x0120,0x0182,0x0100,0x0102,0x0600,0x01D5,0x0138,0x0192,
  453.         0x0150,0xE600,0x01C3,0x019D,0x0131,0x0100,0x0116,0x0100,
  454.         0x010A,0x0190,0x010E,0x014A,0x0200,0x010B,0x018D,0x0121,
  455.         0x0100,0x0145,0x0100,0x0109,0x0184,0x012C,0x0200,0x0107,
  456.         0x01AA,0x0149,0x60FF,0x3300,0x0000
  457.     };
  458.  
  459.     atarigen_eeprom_default = default_eeprom;
  460.  
  461.     rom_decode();
  462. }
  463.  
  464.  
  465.  
  466. /*************************************
  467.  *
  468.  *    ROM definition(s)
  469.  *
  470.  *************************************/
  471.  
  472. ROM_START( relief )
  473.     ROM_REGION( 0x80000, REGION_CPU1 )    /* 8*64k for 68000 code */
  474.     ROM_LOAD_EVEN( "0011d.19e", 0x00000, 0x20000, 0xcb3f73ad )
  475.     ROM_LOAD_ODD ( "0012d.19j", 0x00000, 0x20000, 0x90655721 )
  476.     ROM_LOAD_EVEN( "093-0013.17e", 0x40000, 0x20000, 0x1e1e82e5 )
  477.     ROM_LOAD_ODD ( "093-0014.17j", 0x40000, 0x20000, 0x19e5decd )
  478.  
  479.     ROM_REGION( 0x240000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  480.     ROM_LOAD( "093-0025.14s", 0x000000, 0x80000, 0x1b9e5ef2 )
  481.     ROM_LOAD( "093-0026.8d",  0x080000, 0x80000, 0x09b25d93 )
  482.     ROM_LOAD( "093-0027.18s", 0x100000, 0x80000, 0x5bc1c37b )
  483.     ROM_LOAD( "093-0028.10d", 0x180000, 0x80000, 0x55fb9111 )
  484.     ROM_LOAD( "093-0029.4d",  0x200000, 0x40000, 0xe4593ff4 )
  485.  
  486.     ROM_REGION( 0x200000, REGION_SOUND1 )    /* 2MB for ADPCM data */
  487.     ROM_LOAD( "093-0030.9b",  0x100000, 0x80000, 0xf4c567f5 )
  488.     ROM_LOAD( "093-0031.10b", 0x180000, 0x80000, 0xba908d73 )
  489. ROM_END
  490.  
  491. ROM_START( relief2 )
  492.     ROM_REGION( 0x80000, REGION_CPU1 )    /* 8*64k for 68000 code */
  493.     ROM_LOAD_EVEN( "093-0011.19e", 0x00000, 0x20000, 0x794cea33 )
  494.     ROM_LOAD_ODD ( "093-0012.19j", 0x00000, 0x20000, 0x577495f8 )
  495.     ROM_LOAD_EVEN( "093-0013.17e", 0x40000, 0x20000, 0x1e1e82e5 )
  496.     ROM_LOAD_ODD ( "093-0014.17j", 0x40000, 0x20000, 0x19e5decd )
  497.  
  498.     ROM_REGION( 0x240000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  499.     ROM_LOAD( "093-0025.14s", 0x000000, 0x80000, 0x1b9e5ef2 )
  500.     ROM_LOAD( "093-0026.8d",  0x080000, 0x80000, 0x09b25d93 )
  501.     ROM_LOAD( "093-0027.18s", 0x100000, 0x80000, 0x5bc1c37b )
  502.     ROM_LOAD( "093-0028.10d", 0x180000, 0x80000, 0x55fb9111 )
  503.     ROM_LOAD( "093-0029.4d",  0x200000, 0x40000, 0xe4593ff4 )
  504.  
  505.     ROM_REGION( 0x200000, REGION_SOUND1 )    /* 2MB for ADPCM data */
  506.     ROM_LOAD( "093-0030.9b",  0x100000, 0x80000, 0xf4c567f5 )
  507.     ROM_LOAD( "093-0031.10b", 0x180000, 0x80000, 0xba908d73 )
  508. ROM_END
  509.  
  510.  
  511.  
  512. /*************************************
  513.  *
  514.  *    Game driver(s)
  515.  *
  516.  *************************************/
  517.  
  518. GAME( 1992, relief,  0,      relief, relief, relief,  ROT0, "Atari Games", "Relief Pitcher (set 1)" )
  519. GAME( 1992, relief2, relief, relief, relief, relief2, ROT0, "Atari Games", "Relief Pitcher (set 2)" )
  520.